草庐IT

C++ 多重虚拟继承与 COM

全部标签

java - Java 对继承方法的反射(reflection)在 Windows 和 Linux 中是否不同?

在为持续集成测试(在JeOS服务器上)设置Hudson时,我遇到了一些奇怪的行为,我希望SO的优秀人员可以向我解释。我们的单元测试在很大程度上依赖于域对象的使用,其中有许多必须设置的属性(由于数据库中的空约束)。为了保持我们的测试可读性,我们创建了一个类InstantiationUtils,它可以实例化一个对象并通过反射设置一系列属性:publicstaticTnewInstance(finalClasstype,finalKeyValuePair...propertyValues){returnReflectionUtils.reflectionOperation(newReflec

windows - 免注册 COM 在 Windows Server 2003 上不工作

我已经为我的COM服务器DLL和客户端应用程序创建了必要的list,以便在WindowsXP中免注册工作。我已经测试了所有类型的组合(有注册和没有注册),在所有情况下,如果存在list,客户端应用程序会看到库的并排版本,如果不存在(或COM错误)如果根本没有注册)。我已经在我的WindowsXP开发机器上进行了测试,并将文件(DLL、客户端EXE和每个list)提供给同事,他们也在自己的WindowsXP机器上成功运行了所有内容。list是外部XML文件,而不是嵌入式资源。到目前为止,一切都很好。但是,当我将文件复制到WindowsServer2003计算机时,它不起作用。我遇到无提示

windows - 虚拟内存 : process' one and system's one

本文http://msdn.microsoft.com/en-us/library/aa366912(v=vs.85).aspx指出win32环境(假定为32位)中的虚拟内存一半专用于用户模式进程,一半专用于内核模式进程。如果我记得分页,每个进程都应该有自己的地址空间,从0到任何地址(根据文章,最大0x7FFFFFFF)。但是内核驱动程序呢?是否每个内核驱动程序/程序都有从0x80000000到0xFFFFFFFF的内核地址空间?或者我只是弄错了? 最佳答案 我相信您的印象是驱动程序是独立的进程;对于整体内核和混合内核(NT被认为是

C#:将 DllImport 与继承相结合?

我在尝试将一些代码从java移植到c#时遇到了一些麻烦。首先,对java代码背后的关键概念进行一些解释:现有代码的关键概念是在外部库中导入/使用方法的类。这个类实现了一个接口(interface),它声明了外部库中的大部分方法。好处是能够创建像这样的实例Interface1instance=newclassImplementingInterface1();我正在尝试移植实现接口(interface)并从外部库导入方法的代码。实际上,我必须将该接口(interface)转换为抽象类,因为java接口(interface)使用包含预定义值的字段,这在.NET接口(interface)中实际

windows - 虚拟串口

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:FakinganRS232SerialPort我正在开发一个使用COM串行端口的应用程序。例如,为了测试我的申请逻辑,我认为一种解决方案是使用虚拟COM端口而不是管道。您知道用于此目的的任何软件吗?

windows - 如何从 COM 服务器调用释放

我正在编写一个Com服务器,我已经编写了检测COM客户端意外关闭情况的代码,在这种情况下,我应该在COM服务器代码中关闭COM服务器。我该怎么做?UPD:我遇到COM服务器挂起或更正确的情况,我无法从COM客户端连接到COM服务器,但包含COM服务器的应用程序仍然存在,所以我认为COM服务器可以检测到所有旧的COM客户端已断开连接/关闭/崩溃,应用程序将重新启动,因为没有新的客户端连接。我已经在单独的线程中在COM客户端中编写了以下代码while(notweareclosing){unknown->QueryInterface(IComServer,&server);if(server

c++ - 内存模块是否映射到进程的虚拟空间?

我在Windows上看到函数EnumProcessModules返回为指定进程加载的多个模块(其中一些应该是系统dll,如guard32.dll、version.dll等。)我的问题是:这些模块是否映射到进程的虚拟空间?我可以从主应用程序代码跳转到位于这些模块之一的指令(当然知道地址)吗? 最佳答案 是的,DLL应该映射到进程虚拟地址空间。如果页面中的代码尚未执行,则映射可能不会得到真实物理页面的支持,并且当然执行“随机”代码位而没有正确的初始化或设置代码以正确执行(例如调用处理函数使用一些需要在另一个函数中分配的数据)显然会在一些

c++ - 在 ATL 项目中将 NULL 指针传递给进程外 COM 方法的正确方法

在ATL项目中将NULL指针传递给进程外COM方法的正确方法是什么?我创建了一个通过COM代理托管的COM服务器如果这很重要,我使用的是在Win7上运行的VS2012。服务器项目编译为64位,客户端项目编译为32位IDL看起来类似于下面import"oaidl.idl";import"ocidl.idl";[object,uuid(37EFA952-7036-4398-93A6-6CDAD9DFC005),dual,nonextensible,pointer_default(unique)]interfaceIGame:IDispatch{[id(1)]HRESULTpassNull(

c++ - COM dll注销问题

我有一个包含许多COMdll的项目,为了满足要求,我必须注销一个COMDll,我通过调用Regsvr32-u选项来注销该dll。这个注销操作似乎删除了一个接口(interface),比如ICommon接口(interface),这使得其他COM对象不可用。此ICommon接口(interface)由所有其他COM组件实现,在未注册的COMDll的注册表脚本中,我没有看到任何删除此ICommon接口(interface)的代码表单注册表,如何删除它。如何为给定的CoClass删除接口(interface)信息,BEGIN_COM_MAP和COM_INTERFACE_ENTRY有什么作用吗

c++ - 在 C 中使用 CoGetClassObject() - 访问 COM 对象接口(interface)

有关访问应用程序接口(interface)的说明,普通C/C++无:MFCATLWTL基本上,我想使用COM对象。工作示例源代码或指南-使用(功能)COM对象,不创建COM服务器。问候 最佳答案 这是一个简单的C++示例:CoInitialize(NULL);//absolutelyessential:initializetheCOMsubsystemIMyInterface*pIFace;//createtheobjectandobtainapointertothesoughtinterfaceCoCreateInstance(C